package model

type SysMenu struct {
	DcModel
	//ParentCode 对应 Name
	MenuCode   string    `json:"menu_code" gorm:"菜单编码;not null;unique;index;"`
	ParentCode *string   `json:"parent_code" gorm:"comment:父菜单编码;index;"`
	Path       string    `json:"path" gorm:"comment:菜单地址;"`
	PageType   string    `json:"page_type" gorm:"comment:菜单类型;not null;default:page;"`
	Component  *string   `json:"component" gorm:"comment:组件地址;"`
	Redirect   *string   `json:"redirect" gorm:"comment:重定向地址;"`
	Document   *string   `json:"document" gorm:"comment:文档;"`
	Title      string    `json:"title" gorm:"comment:菜单名称;"`
	Icon       string    `json:"icon" gorm:"comment:菜单图标;"`
	Hidden     string    `json:"hidden" gorm:"comment:是否在列表隐藏;default:no;"`
	Role       []SysRole `json:"role" gorm:"many2many:sys_role_menu;foreignKey:MenuCode;joinForeignKey:MenuCode;references:RoleCode;joinReferences:RoleCode;"`
	Sql        *SysSql   `json:"sql" gorm:"foreignKey:MenuCode;references:MenuCode;"` //Menu Has One Sql

}

type ResponseMenu struct {
	DcModel
	MenuCode   string  `json:"menu_code"`
	ParentCode *string `json:"parent_code"`
	Path       string  `json:"path"`
	PageType   string  `json:"page_type"`
	Component  *string `json:"component"`
	Redirect   *string `json:"redirect"`
	Document   *string `json:"document"`
	Title      string  `json:"title"`
	Icon       string  `json:"icon"`
	Hidden     string  `json:"hidden"`
	SqlCode    *string `json:"sql_code"`
}

type RequestGetMenuList struct {
	RequestPageAndSort
	Path     string `json:"path"`
	Title    string `json:"title"`
	PageType string `json:"page_type"`
}

type RequestAddMenu struct {
	RequestAdd
	ParentCode string `json:"parent_code"`
	MenuCode   string `json:"menu_code"`
	Path       string `json:"path"`
	PageType   string `json:"page_type"`
	Component  string `json:"component"`
	Redirect   string `json:"redirect"`
	Document   string `json:"document"`
	SqlCode    string `json:"sql_code"`
	Title      string `json:"title"`
	Icon       string `json:"icon"`
	Hidden     string `json:"hidden"`
}

type RequestEditMenu struct {
	Id         uint   `json:"id"`
	Sort       uint   `json:"sort"`
	Status     string `json:"status"`
	Memo       string `json:"memo"`
	ParentCode string `json:"parent_code"`
	MenuCode   string `json:"menu_code"`
	Path       string `json:"path"`
	PageType   string `json:"page_type"`
	Component  string `json:"component"`
	Redirect   string `json:"redirect"`
	Document   string `json:"document"`
	SqlCode    string `json:"sql_code"`
	Title      string `json:"title"`
	Icon       string `json:"icon"`
	Hidden     string `json:"hidden"`
}
